/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.sun.dtv.ui;

/**
 * The aim of this interface is to enable components for matte compositing. This
 * interface adds the necessary functionality to incorporate Matte functionality
 * into a component, the matte itself is implemented in the Matte class and
 * classes inheriting from it.
 * @author Rafael da Silva Almeida --- www.rafaelalmeida.net
 */
public interface MatteEnabled {

    /**
     * Return the Matte currently associated with the component implementing this interface.
     * @return - Return the Matte currently associated with the component implementing this interface. 
     */
    Matte getMatte();

     /**
     * The aim of this interface is to enable components for matte compositing.
     * This interface adds the necessary functionality to incorporate Matte
     * functionality into a component, the matte itself is implemented in the
     * Matte class and classes inheriting from it.
     * @throws com.sun.dtv.ui.MatteException - if the Matte has an unsupported
     * type, the platform does not support mattes at all, or an animated matte
     * is associated with the component and is still running
     */
    void setMatte(Matte matte) throws MatteException;

}
